﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Text;
using leviathan.player;

namespace leviathan.scenario
{
    public class Scenario
    {
        /// <summary>
        /// Egy jelenet típusa.
        /// </summary>
        public struct Modell
        {
            public string text;
            public int left;
            public int right;
            public int fight;
            public int search;

            public Modell(string str = "", int l = 0, int r = 0, int f = 0, int s = 0)
            {
                this.text = str;
                this.left = l;
                this.right = r;
                this.fight = f;
                this.search = s;
            }
        }

        private List<Modell> db = new List<Modell>();
        private int act;

        public Scenario()
        {
            
        }

        /// <summary>
        /// Játék kezdetekor az aktuális kaland betöltésére szolgáló metódus.
        /// </summary>
        /// <param name="sce">A betöltendő kaland</param>
        /// <param name="scenumalt">A betöltés után erre a jelenetre álljunk kezdéskor.</param>
        public void load(string sce, int scenumalt)
        {
            db.Clear();

            string path = "../../Scenario/" + sce + ".sco";
            using (StreamReader sr = new StreamReader(path))
            {
                while (!sr.EndOfStream)
                {
                    string first = sr.ReadLine();
                    int second = Convert.ToInt32(sr.ReadLine());
                    int third = Convert.ToInt32(sr.ReadLine());
                    int fourth = Convert.ToInt32(sr.ReadLine());
                    int fifth = Convert.ToInt32(sr.ReadLine());
                    Modell helper = new Modell(first, second, third, fourth, fifth);
                    db.Add(helper);
                }
            }
            act = scenumalt;
        }

        /// <summary>
        /// Továbblépés lehetősége.
        /// </summary>
        /// <param name="nav">Az irány string formátumba, amely a továbblépést meghatározza.</param>
        public void choose(string nav)
        {
            if ("left" == nav)
                act = db[act].left;
            if ("right" == nav)
                act = db[act].right;
            if ("fight" == nav)
                act = db[act].fight;
            if ("search" == nav)
                act = db[act].search;
        }

        /// <summary>
        /// Az aktuális jelenet lekérdezése
        /// </summary>
        /// <returns>Jelenet</returns>
        public Modell getAct()
        {
            return db[act];
        }

        /// <summary>
        /// Az aktuális jelenet számának lekérdezése
        /// </summary>
        /// <returns>Egész szám</returns>
        public int getActNum()
        {
            return act;
        }

    }
}
